Crate awaitility
source ·Expand description
Awaitility for Rust
Fast, Simple, Straightforward Test utility for async functionalities.
Basic Usage
awaitility::at_most(Duration::from_millis(100)).until(|| {test_something_is_true()});
awaitility::at_least(Duration::from_millis(50)).always(|| {test_something_is_true()});
// ...
Examples
use std::sync::atomic::{AtomicUsize, Ordering};
use std::sync::Arc;
use std::time::Duration;
fn at_most_test() {
let counter = Arc::new(AtomicUsize::new(5));
let tcounter = counter.clone();
std::thread::spawn(move || {
while tcounter.load(Ordering::SeqCst) < 15 {
tcounter.fetch_add(1, Ordering::SeqCst);
}
});
awaitility::at_most(Duration::from_millis(100)).until(|| counter.load(Ordering::SeqCst) > 10);
}
Return result
let res = awaitility::new().set_return().at_most(Duration::from_millis(10)).until(|| 1 > 2).result();
assert!(res.is_err());
Config
awaitility::at_most(Duration::from_millis(100))
.poll_interval(Duration::from_millis(45))
.describe("Becomes sunny..")
.until(|| 2 > 1);
Share configured instance
use std::time::Duration;
let aw = awaitility::new().poll_interval(Duration::from_millis(45));
aw.at_least(Duration::from_millis(10)).always(|| 2 > 1);
aw.at_least(Duration::from_millis(10)).once(|| 2 > 1);
Further configs made after at_least
will not be reflected on instance aw
.
Functions
- Create an at-least wait directive with default configs.
- Create an at-most wait directive with default configs.
- Create an awaitility instance with shared configs.